home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1999 October: Technology Seed / ADC Seed CD - October 1999.toast / FireWire / FireWire_2.1_SDK_DR3 / Source / SBP2 / Interfaces / SampleSBP2.h next >
Encoding:
C/C++ Source or Header  |  1999-05-17  |  6.2 KB  |  296 lines  |  [TEXT/MPS ]

  1. /*
  2.     File:        SampleSBP2.h
  3.  
  4.     Contains:    Definitions for use with sample SBP-2 expert/family
  5.  
  6.     Version:    1.0
  7.  
  8.     Copyright:    © 1998-1999 by Apple Computer, Inc., all rights reserved.
  9.  
  10.     File Ownership:
  11.  
  12.         DRI:                Eric Anderson
  13.  
  14.         Other Contact:        
  15.  
  16.         Technology:            FireWire
  17.  
  18.     Writers:
  19.  
  20.         (EA)    Eric Anderson (ewa)
  21.  
  22.     Change History (most recent first):
  23.  
  24.        <FW8>     1/10/99    EA        Added support for testing cable power management API.
  25.        <FW7>      1/3/99    EA        Changed CSRUniqueID to CSRNodeUniqueID.  Somehow it got lost in
  26.                                     the checkin.  Twice.
  27.        <FW6>      1/1/99    EA        Added fields to SBPQueryLoginsParamsStruct to help test
  28.                                     FWGetFWReferenceIDFromUniqueID.
  29.        <FW5>    12/31/98    EA        Added support for Query Logins.
  30.        <FW4>    12/31/98    EA        Added support for sending a TARGET RESET management ORB.
  31.        <FW3>    11/18/98    EA        Added LUN value to status call.
  32.        <FW2>     9/20/98    EA        Filled in header comments.
  33.        <FW1>     9/20/98    EA        first checked in
  34. */
  35.  
  36.  
  37. #ifndef __SampleSBP2__
  38. #define __SampleSBP2__
  39.  
  40. #ifndef __TYPES__
  41. #include <Types.h>
  42. #endif
  43. #ifndef __APPLEEVENTS__
  44. #include <AppleEvents.h>
  45. #endif
  46. #ifndef __NAMEREGISTRY__
  47. #include <NameRegistry.h>
  48. #endif
  49.  
  50. #include <FireWire.h>
  51.  
  52. #ifdef __cplusplus
  53. extern "C" {
  54. #endif
  55.  
  56. #if PRAGMA_IMPORT_SUPPORTED
  57. #pragma import on
  58. #endif
  59.  
  60. #if PRAGMA_ALIGN_SUPPORTED
  61. #pragma options align=mac68k
  62. #endif
  63.  
  64. ////////////////////////////////////////////////////////////////////////////////
  65. //
  66. // Sample SBP family typedefs.
  67. //
  68.  
  69. typedef struct OpaqueSBPClientID*        SBPClientID;
  70. typedef struct OpaqueSBPDriverID*        SBPDriverID;
  71.  
  72. enum
  73. {
  74.     kInvalidSBPClientID            = 0,
  75.     kInvalidSBPDriverID            = 0
  76. };
  77.  
  78. enum
  79. {
  80.     kNdrvTypeIsSampleSBP2        = 'SSBP'
  81. };
  82.  
  83. enum
  84. {
  85.     // Apple event class for Sample SBP family.
  86.     kAESampleSBP2EventClass    = 'SSBP',
  87.  
  88.     // Apple events sent by Sample SBP family.
  89.     kAESampleSBP2DeviceAdded    = 'ADDD',
  90.     kAESampleSBP2DeviceRemoved    = 'RMVD',
  91.  
  92.     // Parameters used by Sample SBP family Apple events.
  93.     kAESBPDriverIDKey            = 'DRID',
  94.     kAESBPDriverIDType            = typeLongInteger //zzz should we have our own???
  95. };
  96.  
  97. struct SBPInterfaceParamsStruct
  98. {
  99.     UInt32                        interfaceSelector;
  100. };
  101. typedef struct SBPInterfaceParamsStruct
  102.                                 SBPInterfaceParams,
  103.                                 *SBPInterfaceParamsPtr;
  104.  
  105. typedef OSErr
  106.     (SBPInterfaceProc) (
  107.         SBPInterfaceParamsPtr    pInterfaceParams);
  108. typedef SBPInterfaceProc        *SBPInterfaceProcPtr;
  109.  
  110. enum
  111. {
  112.     cscSBPCommand                = 2
  113. };
  114.  
  115. enum
  116. {
  117.     kSampleSBPLogin                = 1,
  118.     kSampleSBPLogout            = 2,
  119.     kSampleSBPQueryLogins        = 3,
  120.     kSampleSBPStatus            = 4,
  121.     kSampleSBPStatusInquiry        = 5,
  122.     kSampleSBPModeSense            = 6,
  123.     kSampleSBPReadBlock            = 7,
  124.     kSampleSBPTargetReset        = 8,
  125.     kSampleSBPPowerTest            = 9
  126. };
  127.  
  128. struct SBPGenericParamsStruct
  129. {
  130.     SBPInterfaceParams            sbpInterfaceParams;
  131.     Ptr                            responseBufferPtr;
  132.     UInt32                        responseBufferSize;
  133. };
  134. typedef struct SBPGenericParamsStruct
  135.                                 SBPGenericParams,
  136.                                 *SBPGenericParamsPtr;
  137.  
  138. struct SBPInitializeParamsStruct
  139. {
  140.     SBPInterfaceParams            sbpInterfaceParams;
  141.     RegEntryID                    *pDriverRegEntry;
  142. };
  143. typedef struct SBPInitializeParamsStruct
  144.                                 SBPInitializeParams,
  145.                                 *SBPInitializeParamsPtr;
  146.  
  147. struct SBPTerminateParamsStruct
  148. {
  149.     SBPInterfaceParams            sbpInterfaceParams;
  150.     RegEntryID                    *pDriverRegEntry;
  151. };
  152. typedef struct SBPTerminateParamsStruct
  153.                                 SBPTerminateParams,
  154.                                 *SBPTerminateParamsPtr;
  155.  
  156. struct SBPLoginParamsStruct
  157. {
  158.     SBPInterfaceParams            sbpInterfaceParams;
  159.     Ptr                            responseBufferPtr;
  160.     UInt32                        responseBufferSize;
  161.     OSStatus                    status;
  162. };
  163. typedef struct SBPLoginParamsStruct
  164.                                 SBPLoginParams,
  165.                                 *SBPLoginParamsPtr;
  166.  
  167. struct SBPLogoutParamsStruct
  168. {
  169.     SBPInterfaceParams            sbpInterfaceParams;
  170.     OSStatus                    status;
  171. };
  172. typedef struct SBPLogoutParamsStruct
  173.                                 SBPLogoutParams,
  174.                                 *SBPLogoutParamsPtr;
  175.  
  176. struct SBPStatusParamsStruct
  177. {
  178.     SBPInterfaceParams            sbpInterfaceParams;
  179.     Boolean                        login;
  180.     Boolean                        reconnecting;
  181.     Boolean                        reconnectFailed;
  182.     UInt32                        notificationCounter;
  183.     UInt32                        notificationEvent;
  184.     UInt32                        notificationLength;
  185.     Ptr                            notificationMessage;
  186.     UInt32                        lun;
  187. };
  188. typedef struct SBPStatusParamsStruct
  189.                                 SBPStatusParams,
  190.                                 *SBPStatusParamsPtr;
  191.  
  192. struct SBPQueryLoginsParamsStruct
  193. {
  194.     SBPInterfaceParams            sbpInterfaceParams;
  195.     UInt32                        response[64];
  196.     OSStatus                    status;
  197.     FWReferenceID                fwReferenceID;
  198.     CSRNodeUniqueID                uniqueID;
  199.     OSStatus                    uniqueIDStatus;
  200. };
  201. typedef struct SBPQueryLoginsParamsStruct
  202.                                 SBPQueryLoginsParams,
  203.                                 *SBPQueryLoginsParamsPtr;
  204.  
  205. struct SBPStatusInquiryParamsStruct
  206. {
  207.     SBPInterfaceParams            sbpInterfaceParams;
  208.     OSStatus                    status;
  209. };
  210. typedef struct SBPStatusInquiryParamsStruct
  211.                                 SBPStatusInquiryParams,
  212.                                 *SBPStatusInquiryParamsPtr;
  213.  
  214. struct SBPModeSenseParamsStruct
  215. {
  216.     SBPInterfaceParams            sbpInterfaceParams;
  217.     OSStatus                    status;
  218. };
  219. typedef struct SBPModeSenseParamsStruct
  220.                                 SBPModeSenseParams,
  221.                                 *SBPModeSenseParamsPtr;
  222.  
  223. struct SBPReadBlockParamsStruct
  224. {
  225.     SBPInterfaceParams            sbpInterfaceParams;
  226.     OSStatus                    status;
  227. };
  228. typedef struct SBPReadBlockParamsStruct
  229.                                 SBPReadBlockParams,
  230.                                 *SBPReadBlockParamsPtr;
  231.  
  232. struct SBPTargetResetParamsStruct
  233. {
  234.     SBPInterfaceParams            sbpInterfaceParams;
  235.     OSStatus                    status;
  236. };
  237. typedef struct SBPTargetResetParamsStruct
  238.                                 SBPTargetResetParams,
  239.                                 *SBPTargetResetParamsPtr;
  240.  
  241. struct SBPPowerTestParamsStruct
  242. {
  243.     SBPInterfaceParams            sbpInterfaceParams;
  244.     OSStatus                    status;
  245. };
  246. typedef struct SBPPowerTestParamsStruct
  247.                                 SBPPowerTestParams,
  248.                                 *SBPPowerTestParamsPtr;
  249.  
  250.  
  251.  
  252. ////////////////////////////////////////////////////////////////////////////////
  253. //
  254. // Sample SBP family services.
  255. //
  256.  
  257. OSStatus    RegisterSBPClientApplication (
  258.     SBPClientID                    *pSBPClientID,
  259.     UInt32                        clientContextData);
  260.  
  261. OSStatus    UnregisterSBPClientApplication (
  262.     SBPClientID                    sbpClientID);
  263.  
  264. OSStatus    GetSBPDriverList (
  265.     SBPDriverID                    *pSBPDriverIDList,
  266.     UInt32                        sbpDriverIDListSize,
  267.     UInt32                        *pNumSBPDrivers);
  268.  
  269. OSStatus    CallSBPDriver (
  270.     SBPDriverID                    sbpDriverID,
  271.     SBPInterfaceParamsPtr        pInterfaceParams);
  272.  
  273. OSStatus    OpenSBPDriver (
  274.     SBPDriverID                    sbpDriverID);
  275.  
  276. OSStatus    CloseSBPDriver (
  277.     SBPDriverID                    sbpDriverID);
  278.  
  279. OSStatus    GetNextSBPClientEvent (
  280.     SBPClientID                    sbpClientID);
  281.  
  282.  
  283. #if PRAGMA_ALIGN_SUPPORTED
  284. #pragma options align=reset
  285. #endif
  286.  
  287. #if PRAGMA_IMPORT_SUPPORTED
  288. #pragma import off
  289. #endif
  290.  
  291. #ifdef __cplusplus
  292. }
  293. #endif
  294.  
  295. #endif /* __SampleSBP2__ */
  296.